package com.jiangds.open.annotation;

import com.jiangds.open.util.TypeRegister;

import java.lang.annotation.*;

/**
 * 注解只能作用在属性上,如果属性不在{@link TypeRegister}则无法校验
 * {@link CheckRule}  字段校验
 * @author jiangliang
 * @since 2021/1/6 13:37
 */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
@Repeatable(CheckRules.class)
public @interface CheckRule {

    /**
     * 对象不为空,字符串不是空白,集合size!=0
     */
    boolean notEmpty() default true;

    /**
     * 数字不小于,字符串长度不小于,集合size不小于,日期不早于当前日期减去的天数
     */
    double min() default Integer.MIN_VALUE;

    /**
     * 数字不大于,字符串长度不大于,集合size不大于,日期不晚于当前日期加上的天数
     */
    double max() default Integer.MAX_VALUE;

    /**
     * 默认的时间格式化方案,如果是日期,默认取yyyy-MM-dd
     */
    String dateFormat() default "yyyy-MM-dd HH:mm:ss";

    /**
     * 必须晚于的日期,需要用dateFormat格式化
     */
    String after() default "";

    /**
     * 必须早于的日期,需要用dateFormat格式化
     */
    String before() default "";

    /**
     * 数字 和 字符串正则表达式
     */
    String regex() default "";

    /**
     * 错误提示语
     */
    String msg() default "参数异常,请检查输入";

}
